<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro" xmlns:ry="">
	<head>
		<th:block th:include="include :: header('定时任务列表')" />
	</head>
	<body class="gray-bg">
		<div class="container-div">
			<div class="row">
				<div class="col-sm-12 search-collapse">
					<form id="job-form">
						<div class="select-list">
							<ul>
								<li>
									任务名称：<input type="text" name="job_name"/>
								</li>
								<li>
									任务分组：<ry:selectDict dictType="sys_job_group" name="job_group" headLabel="所有" headValue="" value=""/>
								</li>
								<li>
									任务状态：<ry:selectDict dictType="sys_job_status" name="status" headLabel="所有" headValue="" value=""/>
								</li>
								<li>
									<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
									<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
								</li>
							</ul>
						</div>
					</form>
				</div>

				<div class="btn-group-sm" id="toolbar" role="group">
					<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">
		                <i class="fa fa-plus"></i> 新增
		            </a>
		            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit">
			            <i class="fa fa-edit"></i> 修改
			        </a>
					<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="monitor:job:remove">
			            <i class="fa fa-remove"></i> 删除
			        </a>
			         <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
			            <i class="fa fa-download"></i> 导出
			        </a>
                    <a class="btn btn-info" onclick="javascript:jobLog()" shiro:hasPermission="monitor:job:detail">
                        <i class="fa fa-list"></i> 日志
                    </a>
		        </div>

		        <div class="col-sm-12 select-table table-striped">
				    <table id="bootstrap-table"></table>
				</div>
			</div>
		</div>
		<th:block th:include="include :: footer" />
		<script th:inline="javascript">
	        var detailFlag = [[${@permission.hasPermi('monitor:job:detail')}]];
			var editFlag = [[${@permission.hasPermi('monitor:job:edit')}]];
			var removeFlag = [[${@permission.hasPermi('monitor:job:remove')}]];
			var statusFlag = [[${@permission.hasPermi('monitor:job:changeStatus')}]];
			var datas = [[${@dict.getType('sys_job_group')}]];
			var prefix = ctx + "monitor/job";

			$(function() {
			    var options = {
			        url: prefix + "/list",
			        detailUrl: prefix + "/detail/{id}",
			        createUrl: prefix + "/add",
			        updateUrl: prefix + "/edit/{id}",
			        removeUrl: prefix + "/remove",
			        exportUrl: prefix + "/export",
			        sortName: "create_time",
			        sortOrder: "desc",
			        modalName: "任务",
			        columns: [{
			            checkbox: true
			        },
			        {
			            field: 'job_id',
			            title: '任务编号',
			            align: 'center'
			        },
			        {
			            field: 'job_name',
			            title: '任务名称'
			        },
			        {
			            field: 'job_group',
			            title: '任务分组',
			            align: 'center',
			            formatter: function(value, row, index) {
			            	return $.table.selectDictLabel(datas, value);
			            }
			        },
			        {
			            field: 'invoke_target',
			            title: '调用目标字符串',
			            formatter: function(value, row, index) {
	                    	return $.table.tooltip(value);
	                    }
			        },
			        {
			            field: 'cron_expression',
			            title: '执行表达式'
			        },
			        {
			        	visible: statusFlag == 'hidden' ? false : true,
			        	title: '任务状态',
			        	align: 'center',
			        	formatter: function (value, row, index) {
			        		return statusTools(row);
			        	}
			        },
			        {
			            field: 'create_time',
			            title: '创建时间',
			            align: 'center',
			            sortable: true
			        },
                    {
                        title: '操作',
                        align: 'center',
                        formatter: function(value, row, index) {
                            var actions = [];
                            actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.job_id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                            actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.job_id + '\')"><i class="fa fa-remove"></i>删除</a> ');
                            var more = [];
                            more.push("<a class='btn btn-default btn-xs " + statusFlag + "' href='javascript:void(0)' onclick='run(" + row.job_id + ")'><i class='fa fa-play-circle-o'></i> 执行一次</a><br> ");
                            more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='$.operate.detail(" + row.job_id + ")' style='margin-top: 5px;'><i class='fa fa-search'></i>任务详细</a><br> ");
                            more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='jobLog(" + row.job_id + ")' style='margin-top: 5px;'><i class='fa fa-list'></i>调度日志</a>");
                            actions.push('<a class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
                            return actions.join('');
                        }
                    }]
			    };
			    $.table.init(options);
			});

			/* 调度任务状态显示 */
			function statusTools(row) {
			    if (row.status == 1) {
	    			return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="start(\'' + row.job_id + '\', \'' + row.job_group + '\')"></i> ';
	    		} else {
	    			return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="stop(\'' + row.job_id + '\', \'' + row.job_group + '\')"></i> ';
	    		}
			}

			/* 立即执行一次 */
            function run(job_id) {
                $.modal.confirm("确认要立即执行一次任务吗？", function() {
                    $.operate.post(prefix + "/run", { "job_id": job_id});
                })
            }

			/* 调度任务-停用 */
			function stop(job_id, job_group) {
				$.modal.confirm("确认要停用任务吗？", function() {
					$.operate.post(prefix + "/changeStatus", { "job_id": job_id, "job_group": job_group, "status": 1 });
			    })
			}

			/* 调度任务-启用 */
			function start(job_id, job_group) {
				$.modal.confirm("确认要启用任务吗？", function() {
					$.operate.post(prefix + "/changeStatus", { "job_id": job_id, "job_group": job_group, "status": 0 });
			    })
			}

			/* 调度日志查询 */
            function jobLog(jobId) {
                var url = ctx + 'monitor/jobLog';
                if ($.common.isNotEmpty(jobId)) {
                    url += '?job_id=' + jobId;
                }
                $.modal.openTab("调度日志", url);
            }
		</script>
	</body>
</html>